﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using WC.BL.BE;
using WC.BL.BCC;
using System.Collections.Generic;

namespace WC.UI.WebApp
{
    public partial class MantUsuario : System.Web.UI.Page
    {
        #region Metodos internos

        private void cargaGrilla()
        {
            try
            {
                List<UsuarioBE> lst = UsuarioBC.read(new UsuarioBE( txtUsuarioB.Text.Trim(), "",txtCorreoB.Text,txtNombreB.Text,
                                                                   ddlRamoFiltroB.SelectedValue, false, false,
                                                                   "",""));
                cgvMantUsuario.DataSource = lst;
                cgvMantUsuario.DataBind();
                if (lst.Count == 0) Session["Mensaje"] = "No se encontró coincidencias.";
            }
            catch (Exception ex)
            {
                Session["Mensaje"] = ex.Message;
            }
            finally
            {
               ((Main)Master).muestraMensajes();
            }
        }

        private void cargarCombos(DropDownList ddl)
        {
            try
            {
                ddl.DataSource = SectorBC.list();
                ddl.DataBind();

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void clearPopup()
        {
            txtUsuario.Text = string.Empty;
            txtClave.Text = string.Empty;
            txtCorreo.Text = string.Empty;
            txtNombre.Text = string.Empty;
            ddlRamoFiltro.SelectedValue = string.Empty;
            chbTipo.Checked = false;
            chbBloqueado.Checked = false;
        }

        #endregion
        protected void Page_Load(object sender, EventArgs e)
        {
            //Sirve para validar si el usuario es ADMIN
            if (!Page.IsPostBack)
            {
                try
                {
                    ((Main)Master).checkUser(true);

                    cargarCombos(ddlRamoFiltro);
                    cargarCombos(ddlRamoFiltroB);
                }
                catch { }
            }
        }


        protected void btnGrabarI_Click(object sender, EventArgs e)
        {
            try
            {
                if (!txtCorreo.Text.Equals("") && txtCorreo.Text.IndexOf("@") > 0 && txtCorreo.Text.IndexOf(".") > 0)
                {
                    if (Session["operacion"] != null)
                    {
                        if (((string)Session["operacion"]).Equals("write"))
                        {
                            if (!string.IsNullOrEmpty(txtClave.Text.Trim()) && !string.IsNullOrEmpty(txtUsuario.Text.Trim()) &&
                                !string.IsNullOrEmpty(txtCorreo.Text.Trim()) && !string.IsNullOrEmpty(txtNombre.Text.Trim()))
                            {
                                UsuarioBE Usuario = new UsuarioBE();
                                Usuario.Usuario = txtUsuario.Text.Trim();
                                Usuario.Clave = txtClave.Text.Trim();
                                Usuario.Correo = txtCorreo.Text.Trim();
                                Usuario.Nombre = txtNombre.Text.Trim();
                                Usuario.Ramo = ddlRamoFiltro.SelectedValue;
                                Usuario.AdminUser = chbTipo.Checked;
                                Usuario.Bloqueado = chbBloqueado.Checked;
                                Session["Mensaje"] = UsuarioBC.write(Usuario);

                                txtUsuario.Text = string.Empty;
                                txtClave.Text = string.Empty;
                                txtCorreo.Text = string.Empty;
                                txtNombre.Text = string.Empty;
                                ddlRamoFiltro.SelectedValue = "";
                                chbTipo.Checked = false;
                                chbBloqueado.Checked = false;
                                List<UsuarioBE> lst = null;
                                cgvMantUsuario.DataSource = lst;
                                cgvMantUsuario.DataBind();
                            }
                            else
                            {
                                Session["Mensaje"] = "No se creó el usuario. Por favor, introduzca todos los campos obligatorios.";
                            }
                        }
                        else if (((string)Session["operacion"]).Equals("update"))
                        {

                            {
                                UsuarioBE Usuario = (UsuarioBE)Session["Usuario"];
                                Usuario.Usuario = txtUsuario.Text;
                                Usuario.Clave = txtClave.Text;
                                Usuario.Correo = txtCorreo.Text;
                                Usuario.Nombre = txtNombre.Text;
                                Usuario.Ramo = ddlRamoFiltro.SelectedValue;
                                Usuario.AdminUser = chbTipo.Checked;
                                Usuario.Bloqueado = chbBloqueado.Checked;
                                Session["Mensaje"] = UsuarioBC.update(Usuario);

                                txtUsuario.Text = string.Empty;
                                txtClave.Text = string.Empty;
                                txtCorreo.Text = string.Empty;
                                txtNombre.Text = string.Empty;
                                ddlRamoFiltro.SelectedValue = "";
                                chbTipo.Checked = false;
                                chbBloqueado.Checked = false;
                            }
                        }
                    }
                }
                else
                {
                    Session["Mensaje"] = "No se realizó la operación. El correo electrónico ingresado es inválido.";
                
                }
            }
            catch (Exception ex)
            {
                Session["Mensaje"] = ex.Message;
            }
            finally
            {
                ((Main)Master).muestraMensajes();
            }
        }

        protected void btnCancel_Click(object sender, EventArgs e)
        {
            Session["Usuario"] = null;
            Session["operacion"] = null;
        }
        protected void ibtnBuscar_Click(object sender, EventArgs e)
        {
        }

        protected void btnSetUpdt_OnClick(object sender, EventArgs e)
        {
            if (((ImageButton)sender).ID.ToString().Equals("btnAdd"))
            {
                txtUsuario.Enabled = true;
                this.clearPopup();
                mpeMantUsuario1.Show();
                Session["operacion"] = "write";
            }

        }

        protected void cgvMantUsuario_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                //if (txtTitulo.Text.Equals(""))
                {
                    int idx = Convert.ToInt32(e.CommandArgument);
                    GridViewRow selectedRow = cgvMantUsuario.Rows[idx];
                    TableCell contactName = selectedRow.Cells[1];
                    string id = contactName.Text;

                    txtUsuario.Enabled = false;
                    Session["operacion"] = "update";
                    UsuarioBE Usuario = UsuarioBC.read(id);
                    if (Usuario != null)
                    {
                        txtUsuario.Text = Usuario.Usuario;
                        txtClave.Text = Usuario.Clave;
                        txtCorreo.Text = Usuario.Correo;
                        txtNombre.Text = Usuario.Nombre;
                        ddlRamoFiltro.SelectedValue = Usuario.Ramo;
                        chbTipo.Checked = Usuario.AdminUser;
                        chbBloqueado.Checked = Usuario.Bloqueado;
                        Session["Usuario"] = Usuario;
                        mpeMantUsuario1.Show();
                    }
                    
                }
            }
            catch { }
        }

        protected void ibtnBuscar_Click(object sender, ImageClickEventArgs e)
        {
            cargaGrilla();
        }

    }
}
